<!DOCTYPE html>
<html lang="zh">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>字符串的方法</title>
    <script>
        /* 
            字符串
                字符串其本质就是一个字符数组
                hello===>["h","e","l","l","o"]
                字符串的很多方法都和数组是非常类似的。
                属性和方法
                实例属性
                    1.length          获取字符串的长度,数组的length可以指定，但是字符串的不可以。
                    2.字符串[索引]     获取指定位置的字符
                实例方法
                    1.str.at()      
                        也是根据索引获取字符。
                        和字符串[索引]不一样的是，at()可以传入负值。

                    2.str.chartArt()
                        和字符串[索引]，都不能传入负值，是一种比较老的方法。

                    3.str.concat()      
                        用来连接两个或多个字符串

                    4.str.includes(searchElement,fromIndex)    
                        用来检查字符串里是否包含某个内容，返回true或false
                            第一个参数表示要查询的元素
                            第二个参数表示要开始查询的位置索引（可选，默认从0开始）

                    5.str.indexOf(searchElement,fromIndex)      从前往后查
                    str.lastIndexOf(searchElement,fromIndex)    从后往前查
                        查询元素第一次出现时的索引，有就返回索引，没有就返回-1

                    6.str.endsWith(searchString,length)     数组不适用这种方法
                    str.startsWith(searchString,length)
                        检查字符串以指定字符结束/开始
                            第一个参数表示要查询的字符
                            第二个参数表示要查询的字符串的长度（可选值，如果不提供，则查询原字符串全部长度）
                    
                    7.str.padStart(targetLength, padString)     从头开始填充
                    str.padEnd(targetLength, padString)         从尾开始填充
                        用另一个字符串填充当前字符串（如果需要会重复填充），直到达到给定的长度。
                            第一个参数表示填充后的字符串长度
                            第二个参数是要填充的字符串，如果太长，会按填充后的长度，自动截断要填充的字符串（可选值，默认值为 Unicode“空格”字符）

                    8.replace(pattern, replacement)     用后面的字符串去替换第一个前面的字符串(数组不可用)
                    replaceAll(pattern, replacement)     用后面的字符串去替换所有前面的字符串

                    9.slice(起始位置索引，终点位置索引)    (数组可用)
                    substring(起始位置索引，终点位置索引)   参数较为智能，可以任意写参数表示区间（15，12）就表示12-15的索引
                            截取字符串，得到一个新的字符串
                    substr(起始位置索引，截取的数量)

                    10.split()
                        用于将一个字符串拆分为一个数组
                        参数：用于拆分的标识符，如果有，就根据谁拆，这个标识符会不存在
                            默认就是整个字符串不拆转为数组。

                    11.toLowerCase()    整个字符串转为小写字符串
                       toUpperCase()    整个字符串转为大写字符串

                    12.trim()   去除字符串的前后空格
                    trimStart() 去除开始位置的空格
                    trimEnd()   去除结束位置的空格



        */
        let str = "hello"
        let str1 = "world!"
        let str3='hello hello world!'
        let str4="   a   b   c  d   "
        let arr = [1, 2, "3"]


        console.log('对字符串进行浅拷贝：', str.slice());
        console.log("获取字符串长度：", str.length);
        console.log("根据索引获取指定字符串的字符：", str[1]);
        console.log("根据索引获取指定字符串的字符at()方法：", str.at(-1))
        console.log("用来连接两个或多个字符串,concat():", str.concat(" ", str1))
        console.log('用来检查字符串里是否包含某个内容,includes():', str.includes("ll",2))
        console.log(arr.includes(2,0)) //true
        console.log("查询元素第一次出现时的索引,indexOf(searchElement,fromIndex(可选)): ",str3.indexOf("lo",-10))

        console.log('检查字符串以指定字符结束,endsWith(searchString,length(可选)):',str.endsWith("o",3))
        console.log("从头开始填充字符串,padStart(targetLength, padString(可选)):",str.padStart(10,"12"))
        console.log('用后面的字符串去替换前面的字符串,replace(替换的，被替换的)',str3.replace("hello","你好"))
        console.log(str3.replaceAll("hello","你好"))
        console.log(str3.split(""))
        console.log(str3.toLowerCase())
        console.log(str3.toUpperCase())
        console.log(str4.trim())

    </script>
</head>

<body>

</body>

</html>